██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Salsa20
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Il mwbqSalsa20 è un mwbgcifrario a flusso sviluppato da mwbwDaniel J. Bernstein nel mwca2005 e selezionato per il portafoglio del progetto mwcqeSTREAM per il mwcgProfilo 1 (implementazione mwcwsoftware). È costruito su una funzione mwdapseudo-casuale basata sull'addizione a 32 mwdqbit, sull'mwdgOR esclusivo (XOR) e sulle operazioni di rotazione dei bit, che utilizza mwdwchiavi a 256 bit (ma possono essere utilizzate anche chiavi a mwea128 bit) e mweqnonce a mweg64 bit. La funzione lavora effettuando 20 passaggi, da cui il nome dell'algoritmo.
Contents
• Varianti
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Implementazione
Il Salsa20 è stato sviluppato focalizzandosi su due punti principali:
1. utilizzare operazioni semplici;
2. ottenere elevata velocità di calcolo.
Il secondo punto è stato soddisfatto in parte con l'uso delle operazioni di cui al precedente punto ed in parte strutturando l'algoritmo in modo che la chiave di cifratura ed il nonce fossero utilizzati direttamente come input della funzione interna senza dover ricorrere a processi iniziali di mwhggestione della chiave (mwhwkey scheduling) e setup del mwiavettore di inizializzazione (mwiqIV setup), operazioni in genere abbastanza gravose in termini di complessità elaborativa.
Il keystream è generato in blocchi di 512 bit, ed ogni blocco è costituito da un hash indipendente della chiave, dal nonce e dal numero del blocco stesso espresso con un contatore a 64 bit. Grazie a questo contatore il keystream può essere anche utilizzato con accesso casuale permettendo così all'utente di utilizzare qualsiasi blocco desideri.
Varianti
Il Salsa20 deve il suo nome al fatto che esegue 20 passaggi di mescolamento del suo input. Esistono anche versioni con il numero dei passaggi ridotti ad 8 e 12 chiamate, rispettivamente, mwkwSalsa20/8 e mwlaSalsa20/12. Queste versioni sono state introdotte non per sostituire l'algoritmo originale ma per ottenere migliori prestazioni nei mwlqbenchmark eseguiti all'eSTREAM: proprio il Salsa20/12 è stato selezionato per essere inserito nel portafoglio finale degli algoritmi selezionati dal progetto, grazie all'ottimo bilanciamento fra prestazioni e sicurezza.
Sicurezza
Il primo attacco condotto positivamente contro il Salsa20 è di Paul Crowley, che nel mwma2005 ha utilizzato la crittoanalisi differenziale troncata per violare una versione ridotta con soli 5 passaggi (Salsa20/5) dell'algoritmo, con un tempo di calcolo stimato in 2mwmg165cite-ref-1[1]. Nel mwnw2006 Fischer, Meier, Berbain, Biasse e Robshaw hanno descritto un attacco simile condotto contro il Salsa20/6, con un tempo di calcolo stimato in 2mwoa177, ed uno contro il Salsa20/7 (2mwoq217)cite-ref-2[2].
Nel mwpw2008 Aumasson, Fischer, Khazaei, Meier e Rechberger hanno descritto sia un attacco contro il Salsa20/7, con un tempo computazionale di 2mwqa151, sia uno contro il Salsa20/8, con un tempo di calcolo di 2mwqq251cite-ref-3[3]. Quest'ultimo attacco si basa sull'utilizzo di un nuovo concetto di analisi probabilistica di bit neutri nella chiave per il rilevamento probabilistico di un probabile attacco differenziale troncato. Questo attacco può essere utilizzato per recuperare una chiave a 128 bit del Salsa20/7.
Non esistono attacchi noti al Salsa20/12 ed al Salsa20.
Note
cite-note-11. ↑ mwtqmwtgmwtwTruncated differential cryptanalysis of five rounds of Salsa20, su mwuaciphergoth.org.
cite-note-22. ↑ mwvaNon-Randomness in eSTREAM Candidates Salsa20 and TSC-4, Indocrypt 2006
cite-note-33. ↑ mwwqmwwgmwwwNew Features of Latin Dances (mwxamwxqPDF), su mwxgeprint.iacr.org.
Collegamenti esterni